1. Technical Field
This invention generally relates to computer systems, and more specifically relates to the debugging of multi-threaded computer programs.
2. Background Art
As the sophistication and complexity of computer hardware and software increase, the more difficult the software is to debug. Debugging is the process of finding problems, or “bugs”, during the development of a computer program. Most modern programming environments include a debugger that provides tools for testing and debugging a computer program. Known debuggers allow the user to set one or more breakpoints in the computer program, which are points where the execution of the computer program is stopped so that the state of the program can be examined to verify that the program executed as designed.
In a multi-threaded computer program, multiple threads of execution are defined. Different threads of execution may be executed in parallel. In a computer system that has multiple processors, different threads of execution may be executed on different processors, providing true real-time parallel processing of the threads. In some computer systems, such as the BlueGene computer system developed by IBM, there may be many thousands of threads executing at the same time. Even on more traditional computer system such as the eServer iSeries developed by IBM, some WebSphere applications may have hundreds of threads. Debugging a multi-threaded computer program with a large number of threads is difficult. Prior art debuggers display threads in the order they were created. However, when there are a large number of threads, debugging is still difficult. Without a mechanism and method for grouping threads based on user-specified criteria, programmers will continue to suffer from inefficient tools for debugging multi-threaded computer programs.